Typ Variant - problem s pretypovanim

Otázka od: Stanislav Kochan

16. 12. 2002 18:32

Nazdar konf.

Mam problem s ktorym si uz dva dni lamem hlavu.
Mam server ktory mi posiela premennu typu OleVariant.
Problem je ze nikdy neviem akeho typu ta premenna je. Moze to byt obycajny
Integer ale aj pole alebo nejaky retazec.
System prace, ze si zistim akeho typu je a podla toho sa v programe chovam
je pre mna strasne tazkopadny a strasne to zozloziti program.
Ja skratka potrebujem pretypovat tento Variant (nech bol predtym cokolvek
int, string, byte, float) na obycajne pole Bytov. A potom si uz s nim
spravim co je treba.

Neviete mi s tym niekto pomoct?

Dik Stano.

Odpovedá: Jan Sebelík

17. 12. 2002 6:06

Podivej se na typ TVarData (myslim, ze se to tak jmenuje).
Pak bude jasne, co Variant vlastne obsahuje.

Asi to uplne jednoduse nepujde: pokud je to Integer, jsou data ulozena primo v
rekordu (VInteger), pokud je to pole, musis je hledat v TVarData.VArray.Data.

Leda bys dostal ten Integer jako VarArrayCreate([0,0],varInteger), pak by byl
pristup jasny ...  

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================
----------
> Odesílatel: Stanislav Kochan <skochan@microstep-hdo.sk>
> Komu: delphi-l@clexpert.cz
> Předmět: Typ Variant - problem s pretypovanim
> Datum: 16. prosince 2002 18:27
>
> Nazdar konf.
>
> Mam problem s ktorym si uz dva dni lamem hlavu.
> Mam server ktory mi posiela premennu typu OleVariant.
> Problem je ze nikdy neviem akeho typu ta premenna je. Moze to byt obycajny
> Integer ale aj pole alebo nejaky retazec.
> System prace, ze si zistim akeho typu je a podla toho sa v programe chovam
> je pre mna strasne tazkopadny a strasne to zozloziti program.
> Ja skratka potrebujem pretypovat tento Variant (nech bol predtym cokolvek
> int, string, byte, float) na obycajne pole Bytov. A potom si uz s nim
> spravim co je treba.
>
> Neviete mi s tym niekto pomoct?
>
> Dik Stano.
>